package com.arpa.oms.mapper;

import com.arpa.oms.domain.dto.OmsReceivableDetailDTO;
import com.arpa.oms.domain.entity.OmsReceivableDetail;
import com.arpa.oms.domain.vo.OmsReceivableDetailVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * OMS应收明细 Mapper 接口
 * </p>
 *
 * @author LEO
 * @since 2020-11-17
 */
public interface OmsReceivableDetailMapper extends BaseMapper<OmsReceivableDetail> {

    /**
     * 查询列表
     * @param omsReceivableDetailDTO
     * @return
     */
    List<OmsReceivableDetailVO> queryList(OmsReceivableDetailDTO omsReceivableDetailDTO);

    /**
     * 查询合计,包含总数
     * @param omsReceivableDetailDTO
     * @return
     */
    OmsReceivableDetailVO queryListSum(OmsReceivableDetailDTO omsReceivableDetailDTO);

    /**
     * 生成结算单时更新费用金额
     * @param code 费用明细标识
     * @param thisSettledMoney  本次结算金额
     * @param byCode 操作人code
     * @param name 操作人姓名
     */
    void updateSettlementMoney(@Param("code") String code, @Param("thisSettledMoney") BigDecimal thisSettledMoney, @Param("byCode") String byCode, @Param("name") String name);



    /**
     * 删除、修改结算单后还原收费信息
     * @param code 费用标识
     * @param restoreMoney 要还原的金额
     */
    void restoreSettlementStatus(@Param("code") String code, @Param("restoreMoney") BigDecimal restoreMoney, @Param("amountReduce") BigDecimal amountReduce);

    /**
     * 收款单审核通过后确认收费信息
     * @param code 费用标识
     * @param confirmMoney 确认金额
     */
    void confirmSettlementStatus(@Param("code") String code, @Param("confirmMoney") BigDecimal confirmMoney);
}
